/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : bsp_adc.c
  * @brief          : bsp adc functions
  * @author         : TuxMonkey
  * @date           : 2025/11/22
  * @version        : v1.0
  ******************************************************************************
  * @attention      : Pay attention to enable the adc
  ******************************************************************************
  */
/* USER CODE END Header */

/* Includes ------------------------------------------------------------------*/
#include "bsp_adc.h"
#include "adc.h"

/**
 * @brief ADC sampling voltage array
 */
__attribute__((section (".AXI_SRAM"))) uint16_t ADC_Voltage_Val[2];

/**
  * @brief  Configures the ADC.
  * @param  None
  * @retval None
  */
void BSP_ADC_Init(void)
{
    HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED);
    HAL_ADC_Start_DMA(&hadc1, (uint32_t *) ADC_Voltage_Val, 2);
}

//------------------------------------------------------------------------------

/**
  * @brief  USER get current voltage.
  * @param  None
  * @retval Voltage
  */
float USER_ADC_Voltage_Update(void)
{
    auto Voltage = (ADC_Voltage_Val[0] * 3.3f / 65535) * 11.0f;
    return Voltage;
}

//------------------------------------------------------------------------------
